<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script src="./js/a.js"></script>
  <script>

    // userInfo.sex = "女"
    // userInfo.age = 2;

    (function () {
      var userInfo = { username: "王宣麟", age: 18, sex: "男" };

      // 修改对象属性的接口方法：
      function setUserValue(obj) {
        for (const key in obj) {  // {age:22, sex:'女'，aa:1,b:2}
          // 通过判断，禁止用户乱传属性给对象，禁止了对象的动态扩展属性的功能
          if (userInfo[key]) {
            userInfo[key] = obj[key]
          }
        }
        console.log(userInfo);
      }
      // 获取对象的接口方法：
      function getUserValue() {
        // return userInfo  // 不能直接返回引用类型的对象；

        // 深拷贝：
        // return JSON.parse(JSON.stringify(userInfo))
        // 如：通过递归实现对象的深拷贝

        // 下面实现一个浅拷贝
        // return { ...userInfo }

        // let obj = {};
        // for (const key in userInfo) {
        //   obj[key] = userInfo[key]
        // }
        // return obj;

        return Object.assign({}, userInfo)
      }

      window.setUser = setUserValue;
      window.getUser = getUserValue;
    })();

    // setUser({ username: '敬臻豪' })
    // setUser({ username: '张荣平', a: "aaa", b: 132 })

    let a = getUser();
    // console.log(a);
    a.username = '何亚'
    a.aaa = "sdfsfd"
    console.log("a的值：", a);

    let b = getUser()
    console.log("b的值：", b);

  </script>
</body>

</html>